package edu.northwestern.cbits.purple.notifier; import java.io.IOException; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Bundle; import android.widget.RemoteViews; public class BasicWidgetProvider extends PurpleWidgetProvider { public static final String NAME = "BASIC_WIDGET_UPDATE"; public static final String WIDGET_LAUNCH = "config_widget_basic_launch"; public static void setupWidget(Context context, int widgetId, Intent intent) { RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.layout_basic_widget); Bundle extras = intent.getExtras(); AppWidgetManager widgets = AppWidgetManager.getInstance(context); String title = extras.getString("title"); String message = extras.getString("message"); String image = extras.getString("image"); Uri imageUri = null; try { if (image.trim().length() > 0) imageUri = Uri.parse(image); } catch (NullPointerException e) { } if (imageUri != null) { try { remoteViews.setImageViewBitmap(R.id.widget_basic_image, PurpleWidgetProvider.bitmapForUri(context, imageUri)); } catch (IOException e) { remoteViews.setImageViewResource(R.id.widget_basic_image, R.drawable.ic_launcher); } } String titleColor = "#ffffff"; String messageColor = "#ffffff"; if (extras.containsKey("title_color")) titleColor = extras.getString("title_color"); if (extras.containsKey("message_color")) messageColor = extras.getString("message_color"); remoteViews.setTextColor(R.id.widget_basic_title_text, Color.parseColor(titleColor)); remoteViews.setTextColor(R.id.widget_basic_message_text, Color.parseColor(messageColor)); remoteViews.setTextViewText(R.id.widget_basic_title_text, title); remoteViews.setTextViewText(R.id.widget_basic_message_text, message); Intent tapIntent = new Intent(WidgetIntentService.WIDGET_ACTION); tapIntent.putExtras(intent); tapIntent.putExtra("widget_action", "tap"); PendingIntent pendingIntent = PendingIntent.getBroadcast(context, widgetId, tapIntent, PendingIntent.FLAG_CANCEL_CURRENT); remoteViews.setOnClickPendingIntent(R.id.widget_basic_layout, pendingIntent); try { widgets.updateAppWidget(widgetId, remoteViews); } catch (NullPointerException e) { e.printStackTrace(); } } }